OSStatus GetFSSpecFromAEDesc( FSSpec *fsspec, AEDesc* theItem )
{
OSStatus err = noErr;
AEDesc coerceDesc = { NULL, NULL };
AEDesc coerceDesc2 = { NULL, NULL };
FSSpec fsSpec;
/* AEDesc Ç™Ç‹Çæ FSSpec Ç≈ǻǢèÍçáÇÕÅAFSSpec Ç…ïœä∑Ç∑ÇÈ... */
if ( theItem->descriptorType != typeFSS )
{
err = AECoerceDesc( theItem, typeFSS, &coerceDesc2 );
/* AEDesc Ç©ÇÁ FSSpec ÇéÊìæÇ∑ÇÈ */
if ( err == noErr )
{
theItem = &coerceDesc2;
}
}
err = AEGetDescData( theItem, fsspec, sizeof(fsSpec) );
AEDisposeDesc( &coerceDesc2 );
return( err );
}
pascal Boolean NavLaunchServicesFilterProc(
AEDesc* theItem,
void* info,
NavCallBackUserData ioUserData,
NavFilterModes filterMode
)
{
#pragma unused(ioUserData)
NavFileOrFolderInfo *myInfo = (NavFileOrFolderInfo *)info;
OSStatus err = noErr;
Boolean showItem = false;
FSSpec fsspec;
if ( filterMode == kNavFilteringBrowserList )
{
if (theItem->descriptorType == typeFSS)
{
/* ÉtÉ@ÉCÉãÇ‹ÇΩÇÕÉtÉHÉãÉ_ÇÃÇ«ÇøÇÁÇ©ÅH */
if (myInfo->isFolder)
{
/* Ç∑Ç◊ǃÇÃÉtÉHÉãÉ_Çï\é¶ */
showItem = true;
}
else /* ÉtÉ@ÉCÉãÇÕdžÇÈÇ™ÉtÉHÉãÉ_ÇÕǻǢ */
{
Boolean outCanOpenWithGraphicsImporter = false;
Boolean outCanOpenAsMovie = false;
err = GetFSSpecFromAEDesc( &fsspec, theItem );
if ( err != noErr ) goto BailWithError;
/*
CanQuickTimeOpenFile ä÷êîÇ…ä÷Ç∑ÇÈéQçlï∂å£ÇÅAñ{ï∂èëÇÃç≈å„Ç…é¶ÇµÇ‹Ç∑ÅB
ëŒè€ÉtÉ@ÉCÉãÇà FSSpec ÇìnÇ∑ÇæÇØÇ≈ÅAQuickTime ÇÕÅA
outCanOpenWithGraphicsImporter ÉpÉâÉÅÅ[É^ÇΔ outCanOpenAsMovie ÉpÉâÉÅÅ[É^ÇÃíÜÇ≈ÅA
ÉtÉ@ÉCÉãÇ™ÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^ÇégǡǃÅAÇ‹ÇΩÇÕǪÇÃNjNjÉÄÅ[ÉrÅ[ÇΔǵǃ
äJÇØÇÈǩǫǧǩÇé¶Ç∑ílÇï‘ǵNjÇ∑ÅB
ì¡Ç…ãªñ°ê[Ç¢ÇÃÇÕÅAinFlags
ÉpÉâÉÅÅ[É^ÇΔǵǃìnÇπÇÈäeéÌÇÃÉtÉâÉOÇ≈Ç∑ÅB
DZÇÍÇÁÇÕÅAQuickTime ÇÃåüçıï˚ñ@Ç…âeãøÇó^ǶNjÇ∑ÅBéüÇ…äeéÌÉtÉâÉOÇÃÉäÉXÉgÇé¶ÇµÇ‹Ç∑ÅB
- inFlags íËêî -
kQTDontUseDataToFindImporter
DZÇÃÉtÉâÉOÇÕÅAÉtÉ@ÉCÉãíÜÇÃÉfÅ[É^ÇåüçıÇ…ÇÕóòópǵǻǢÇÊǧDž QuickTime Ç…éwé¶ÇµÇ‹Ç∑ÅB
DZÇÍÇ…ÇÊÇËÅAäJÇØÇÈÉtÉ@ÉCÉãǙǻǢÇΔǢǧåãâ Ç™ï‘Ç≥ÇÍÇÈèÍçáÇ…ÇÕì¡Ç…åüçıÇÃë¨ìxÇÕè„Ç™ÇËÇ‹Ç∑Ç™ÅA
QuickTime ÇÕÅAÉtÉ@ÉCÉãÉ^ÉCÉvÇ‚ÉtÉ@ÉCÉãägí£éqÇ≈îFéØÇ≈ǴǻǢÉtÉ@ÉCÉãÇ
äJÇØÇ»Ç¢ÇΔïÒçêÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB
kQTDontLookForMovieImporterIfGraphicsImporterFound
DZÇÃÉtÉâÉOÇÕÅAÉtÉ@ÉCÉãÇäJÇ≠ï˚ñ@Ç™å©Ç¬Ç©Ç¡ÇΩéûì_Ç≈ÅA
QuickTime Ç…åüçıÇèIóπÇ∑ÇÈÇÊǧDžéwé¶ÇµÇ‹Ç∑ÅBÉtÉ@ÉCÉãÇ™ÅAÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^Çégǡǃ
Ç‹ÇΩÇÕǪÇÃNjNjÉÄÅ[ÉrÅ[ÇΔǵǃäJÇØÇÈǩǫǧǩÇímÇËÇΩÇ¢èÍçáÅA
ǪǵǃǪÇÃï˚ñ@Çñ‚ÇÌǻǢèÍçáDžDZÇÃÉtÉâÉOÇìnǵNjÇ∑ÅB
kQTAllowOpeningStillImagesAsMovies
DZÇÃÉtÉâÉOÇÕÅAQuickTime Ç…ÅAê√é~âÊÇÉÄÅ[ÉrÅ[ÇΔǵǃäJÇ≠DZÇΔÇåüì¢Ç∑ÇÈÇÊǧDžéwé¶ÇµÇ‹Ç∑ÅB
DZÇÃÉtÉâÉOÇÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^Ç≈äJÇØÇÈÇΔÇ´ÅA
QuickTime ÇÕé©ìÆìIÇ…ÅAÉtÉ@ÉCÉãÇÉÄÅ[ÉrÅ[ÇΔǵǃäJÇØÇÈÇΔïÒçêǵNjÇ∑ÅB
kQTAllowImportersThatWouldCreateNewFile
DZÇÃÉtÉâÉOÇÕÅAQuickTime Ç…ÅAêVǵǢÉtÉ@ÉCÉãÇçÏê¨Ç∑ÇÈÉCÉìÉ|Å[É^Çä‹ÇflÇÈÇÊǧDžéwé¶ÇµÇ‹Ç∑ÅB
DZÇÃÉtÉâÉOÇ™ÉNÉäÉAÇ≥ÇÍǃǢÇÈèÍçáÅA
QuickTime ÇÕÅAêVǵǢÉtÉ@ÉCÉãÇçÏê¨ÇµÇ»Ç≠ǃLJǪÇÃNjNj
ÉCÉìÉ|Å[ÉgÇ≈Ç´ÇÈÉCÉìÉ|Å[É^ÇÃÇ›Çä‹ÇflÇ‹Ç∑ÅB
kQTAllowAggressiveImporters
DZÇÃÉtÉâÉOÇÕÅAPICT Ç‚ TEXT ÇÃÇÊǧǻí ó·ÉÄÅ[ÉrÅ[ÇΔÇÕçlǶÇÁÇÍǻǢ
ÉtÉ@ÉCÉãÉ^ÉCÉvÇÃÇΩÇflÇ…ÉÄÅ[ÉrÅ[ÉCÉìÉ|Å[É^Çä‹ÇflÇÈÇÊǧDžéwé¶ÇµÇ‹Ç∑ÅB
DZÇÃÉtÉâÉOÇ™ÉNÉäÉAÇ≥ÇÍǃǢÇÈèÍçáÅA
QuickTime ÇÕÅADZÇÍÇÁÇÃÉÄÅ[ÉrÅ[ÉCÉìÉ|Å[É^ÇèúäOǵNjÇ∑ÅB
åüçıÇÃë¨ìxÇ™å¸è„Ç∑ÇÈÇÃÇ≈ÅAÉtÉ@ÉCÉãÇäJÇ≠ï˚ñ@Ç…Ç±ÇæÇÌÇÁǻǢèÍçáÇÕÅA
kQTDontLookForMovieImporterIfGraphicsImporterFound
ÉtÉâÉOÇÃégópÇêÑèßǵNjÇ∑ÅBèÛãµÇ…ÇÊǡǃÇÕÅAåüçıÇÃë¨ìxÇå¸è„Ç≥ÇπÇÈ
kQTDontUseDataToFindImporter ÉtÉâÉOÇégǧÇÃÇ™ï÷óòǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅA
åáì_ÇÕÅAägí£éqÇ‹ÇΩÇÕÉtÉ@ÉCÉãÉ^ÉCÉvÇîFéØÇ≈ǴǻǢÉtÉ@ÉCÉãÇÉXÉLÉbÉvǵǃǵNjǧDZÇΔÇ≈Ç∑ÅB
*/
err = CanQuickTimeOpenFile(
&fsspec,
/* fileType */
myInfo->fileAndFolder.fileInfo.finderInfo.fdType,
/* ÉtÉ@ÉCÉãÇÃägí£éqÅAÇÌÇ©ÇÁǻǢèÍçáÇÕ 0 */
0,
/* ÉtÉ@ÉCÉãÇÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^Ç≈äJÇØÇÈèÍçáÇÕ true Çï‘Ç∑ Å@
&outCanOpenWithGraphicsImporter,
/* ÉtÉ@ÉCÉãÇÉÄÅ[ÉrÅ[ÉCÉìÉ|Å[É^Ç≈äJÇØÇÈèÍçáÇÕ true Çï‘Ç∑
*/
&outCanOpenAsMovie,
/* ÉtÉ@ÉCÉãÇÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^Ç‹ÇΩÇÕÉÄÅ[ÉrÅ[ÉCÉìÉ|Å[É^ÇÃ
Ç«ÇøÇÁÇ≈LJäJÇØÇÈèÍçáÇÕÅAtrue Çï‘Ç∑Ç™
QuickTime ÇÕÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^ÇÃégópÇóDêÊÇ∑ÇÈ */
nil,
/* inFlags
QuickTime Ç…ÅAÉtÉ@ÉCÉãÇå©Ç¬ÇØéüëÊåüçıÇèIóπÇ∑ÇÈÇÊǧDžéwé¶Ç∑ÇÈÇΩÇflÇ…
kQTDontLookForMovieImporterIfGraphicsImporterFound ÇéwíËÇ∑ÇÈÅB
ÉtÉ@ÉCÉãÇÅAÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^ÇégǡǃäJÇØÇÈÇ©ÅAÉÄÅ[ÉrÅ[ÇΔǵǃäJÇØÇÈÇ©ÇÕñ‚ÇÌǻǢ */
kQTDontLookForMovieImporterIfGraphicsImporterFound
);
if ( err != noErr ) goto BailWithError;
if ((outCanOpenWithGraphicsImporter) || (outCanOpenAsMovie))
{
/* ê¨å˜ÅBÉtÉ@ÉCÉãÇÕÅAÉOÉâÉtÉBÉbÉNÉXÉCÉìÉ|Å[É^Ç‹ÇΩÇÕÉÄÅ[ÉrÅ[ÉCÉìÉ|Å[É^ÇÃ
Ç«ÇøÇÁÇ≈LJäJÇØÇÈ */
showItem = true;
}
}
}
}
return (showItem);
BailWithError:
return( false );
}
|